package ln.javatest.day14.demo01;
/*
java.io.InputStream:字节输入流
此抽象类是表示字节输入流的所有类的超类

定义了所有子类共性的方法：
    void close()关闭此输入流并释放与该流关联的所有系统资源。
    abstract  int read()从输入流中读取数据的下一个字节。
    int read(byte[] b)从输入流中读取一定数量的字节，并将其存储在缓冲区数组 b 中。
java.io.InputStream extends InputStream
 FileInputStream:文件字节输入流
 作用：把硬盘文件中的数据，读取到内存中使用
构造方法：
    FileInputStream（String name)
    FileInputStream(File file)
    参数：读取文件的数据源
        String name:文件的路径
        File file：文件
    构造方法的作用：
        1.会创建一个FileInputStream对象
        2.会把FileInputStream对象指向构造方法中要读取的文件
读取数据的原理（硬盘-->内存）
    java程序-->JVM-->OS-->OS读取数据的方法-->读取文件
字节输入流的使用步骤（重点）：
    1.创建FileInputStream对象，构造方法中绑定要读取的数据源
    2.使用FileInputStream对象中的方法read，读取文件
    3.释放资源
*/

import java.io.FileInputStream;
import java.io.IOException;

public class Demo01InputStream {
    public static void main(String[] args) throws IOException {
        //1.创建FileInputStream对象，构造方法中绑定要读取的数据源
        FileInputStream fis = new FileInputStream("D:\\桌面\\Java笔记\\1.txt");
        // 2.使用FileInputStream对象中的方法read，读取文件
        //abstract  int read()从输入流中读取数据的下一个字节。它的指针会自动跳到下一个;
        //读取到文件末尾返回-1
        int len = 0;
        while((len = fis.read())!= -1){
            System.out.print((char)len); //979899 abc
        }
        /*//因为fis.read()会Zion给跳转到下一个，所以下面写法是错误的
        while(fis.read() != -1 {
            System.out.println(fis.read());
        }*/
        //3.释放资源
        fis.close();
    }
}
